1. Technical Field
This application relates to the field of storage devices, and more particularly to the field of migrating virtual machines between storage devices.
2. Description of Related Art
It is desirable to be able to move Virtual Machines (VMs) from one data site to another for a number of reasons, including, for example, disaster avoidance, testing, load balancing, and following the sun/moon. The VMs may be organized in multi-volume repositories, where each volume may include multiple VMs. One way to do this would be to freeze all VMs on a particular volume at a first data site and then copy the volume from the first site to a second site using any appropriate technique, such as synchronous or asynchronous volume replication. Once the entire volume has been copied, the VMs may then be restarted at the second data site.
However, such a straightforward solution, while relatively simple to implement, may be unsatisfactory for a number of reasons. For instance, it may be desirable to migrate only some of the VMs of a volume rather than all the VMs (provide granularity), which the above does not do. In addition, it is desirable to make the operation as seamless as possible so that, while it may be OK to freeze and restart a particular VM for a short period of time, it may not be acceptable to do so for as long as it takes to replicate an entire volume. Furthermore it is desirable that the VMs be protected at all times so that data is not lost (or at least remains consistent) even if one of the sites stops working. It is also desirable that, if a link and/or a site stops working during a transition, the system does not crash.
Accordingly, it is desirable to provide a system that can migrate VMs in a way that addresses the issues set forth above.